1
ความขัดแย้งระหว่างประสิทธิภาพกับผลิตภาพ
AI023Lesson 1
00:00

ในโลกของการเร่งความเร็วฮาร์ดแวร์สำหรับการเรียนรู้เชิงลึก นักพัฒนาหลายรายมักจะเผชิญกับ ช่องว่างของนินจา: ความแตกต่างอย่างมากในประสิทธิภาพระหว่างโค้ดระดับสูงแบบพาيثอน (พายทอร์ช/เทนเซอร์ฟโลว์) กับเคอร์เนลแบบต่ำระดับที่ถูกปรับแต่งด้วยมือโดยใช้แคดีเอ (CUDA) ทริทอน คือภาษาและเครื่องแปลเปิดเผยที่ออกแบบมาเพื่อเติมช่องว่างนี้

1. สเปกตรัมของผลิตภาพกับประสิทธิภาพ

เดิมที คุณมีทางเลือกสองอย่าง: ผลิตภาพสูง (พายทอร์ช) ซึ่งเขียนได้ง่าย แต่มักไม่เหมาะสมกับการทำงานเฉพาะเจาะจง หรือ ประสิทธิภาพสูง (แคดีเอ) ซึ่งต้องอาศัยความรู้เชิงผู้เชี่ยวชาญเกี่ยวกับสถาปัตยกรรมหน่วยประมวลผลกราฟิก (GPU) การจัดการหน่วยความจำร่วม และการซิงค์เธรด

ข้อแลกเปลี่ยน: ทริทอนอนุญาตให้ใช้โครงสร้างคำสั่งแบบพาธอน พร้อมกับสร้างรหัสแบบหลังบ้าน (LLVM-IR) ที่ได้รับการปรับให้มีประสิทธิภาพสูง ซึ่งเทียบเท่ากับรหัสแคดีเอที่เขียนด้วยมือ
ผลิตภาพ (ความสะดวกในการใช้งาน)ประสิทธิภาพ (สมรรถนะ)แคดีเอพายทอร์ชทริทอน

2. โมเดลการเขียนโปรแกรมแบบแบ่งส่วน

ต่างจากแคดีเอ ซึ่งดำเนินการบน โมเดลที่เน้นเธรด โมเดล (ที่คุณเขียนโค้ดสำหรับเธรดเดียว) ทริทอนใช้โมเดล โมเดลที่เน้นส่วน (ทีล) โมเดล คุณเขียนโปรแกรมที่ทำงานกับบล็อก (ทีล) ของข้อมูล คอมไพเลอร์จะจัดการอัตโนมัติ:

  • การรวมหน่วยความจำ (Memory Coalescing): การปรับให้การเข้าถึงหน่วยความจำแบบทั่วไปมีประสิทธิภาพสูงสุด
  • หน่วยความจำร่วม (Shared Memory): การจัดการแคชหน่วยความจำภายใน (SRAM) ที่รวดเร็ว
  • การจัดสรรงานให้หน่วยประมวลผล (SM Scheduling): การกระจายงานไปยังหน่วยประมวลผลแบบสตรีมมิ่ง (Streaming Multiprocessors)

3. ทำไมทริทอนจึงสำคัญ

ทริทอนทำให้นักวิจัยสามารถเขียนเคอร์เนลเฉพาะ (เช่น แฟลชแอตเทนชัน) ด้วยภาษาพาธอน โดยไม่ต้องเสียสมรรถนะที่จำเป็นต่อการฝึกโมเดลขนาดใหญ่ มันช่วยลดความซับซ้อนของการซิงโครไนซ์ด้วยตนเองและการจัดวางหน่วยความจำ

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>